Processor trends are inevitably moving towards multi-core parallelism, while processor clock-speed trends are slowing considerably in the face of physical limitations. Increased application performance will therefore require highly multi-threaded implementations in order to take advantage of processors which are faster only through parallelism.
Also, computing devices will continue to be smaller, cheaper, and more numerous. So-called “edge” devices, such as cell phones, PDA's, and portable media players, for example, are all becoming fully functional computing devices with high levels of storage and network capabilities. Interconnecting this fabric of “rich peer” edge devices creates new opportunities for future applications and business models.
Both of these trends require that future applications are concurrent. The second trend also forecasts that applications will increasingly be distributed and spread across multiple administrative and trust boundaries. Scenario examples from this domain include web applications, business process orchestration, telecommunication applications (e.g., email, IM, VoIP), multiplayer gaming, peer-to-peer file sharing and streaming experiences, etc.
Designing for concurrency is a difficult task as interactions with other processes are unpredictable, with non-deterministic timing. Designing for distribution is further complicated by heterogeneous systems, non-deterministic communications and partial failure. Distributed systems also must account for scale, reliability, and mobility. Designing for decentralization complicates the design process further as it puts demands on interoperability and extensibility across trust domains.
U.S. patent application Ser. No. 10/718,199, filed on Nov. 20, 2003, discloses a decentralized operating system that includes services for representing resources. Each service includes a designation primitive, a behavioral primitive that comprises a unilateral contract, and a communication primitive. The system further includes a decentralized operating system for orchestrating the services executing on a computer system so as to control and coordinate resources.
Such a system may include a networked system for networking computer systems. The networked system includes a first decentralized operating system executing on a computer system. The first decentralized operating system includes a first distributing kernel for designating uniform resource identifiers for a first set of services and distributing messages among the first set of services. Each service includes a unilateral contract. The unilateral contract expresses behaviors of the service.
Such a system may also include a decentralized operating system that includes a distributing kernel. The distributing kernel includes a URI manager for managing names. Each name constitutes a unique designation of a service at the computer system so that the service can be discovered. The system further includes a message dispatcher for forwarding messages among services. Each service is identifiable by a name managed by the URI manager and associated with a unilateral contract.
U.S. patent application Ser. No. 10/718,199 further discloses a method that may be implemented on a computer system. Such a method may include assigning a first unique name to a first service upon request. The first service includes a first unilateral contract for expressing the behaviors of the first service. The method further includes distributing a message to the first service using the unique name. The message is sent by a second service having a second unique name. The second service includes a second unilateral contract for expressing the behaviors of the second service.